/*
 //Esta classe será utilizada para armazenar os valores temporariamente
 */
package Data;

import java.text.ParseException;


public class Cliente extends Pessoa{
    private static final String cliTable = "clientes";

    //Campos exclusivos
    private int numPescador;
    private int numFrequencia;
    final String numeroPescador = "NUMERO_DO_PESCADOR";
    final String frequencia = "FREQUENCIA";
    final String email = "EMAIL"; //cliente
    final String peixePreferido = "PEIXE_PREFERIDO"; //cliente
    final String carteirinha = "CARTEIRINHA"; //cliente
    final String obsevacao = "OBSERVACAO"; //cliente
    private boolean flagClienteNaoEncontrado = false;

  public Cliente(Cliente c) {
      super(c);
  }

/*
 * Usado para inserir
 */
  public Cliente(String cpf, String nome, String sobrenome, String apelido, String rg,
          String dataNascimento, String logradouro, String numero, String bairro, String cidade, 
          String estado, String cep, String telefone, String celular, String email, String peixePreferido, 
          String sexo, String carteirinha, String obs) throws ParseException {
       super( cpf,  nome,  sobrenome,  apelido,  rg,  dataNascimento,  logradouro,  numero,  bairro,  cidade,
           estado,  cep,  telefone,  celular,  sexo);

      hmPessoa.put(this.email , email);
      hmPessoa.put(this.peixePreferido , peixePreferido);
      hmPessoa.put(this.carteirinha , carteirinha);
      hmPessoa.put(this.obsevacao , obs);
  }
/*
 * Usado para Atualizar
 */
  public Cliente(int numPesc, String nome, String sobrenome, String cpf) {
      super(nome, sobrenome, cpf);
      this.numPescador = numPesc;
  }

    public Cliente() {
      
    }

     public void setData(String key, Object value){     
        if(key.toUpperCase().equals(this.numeroPescador)){
            this.setNumeroPescador((Integer)value);
        } else if(key.toUpperCase().equals(this.frequencia)){
            this.setFrequencia((Integer)value);
        } else {
            super.setData(key, value);
        }
    }

    public Object getData(String key){
        if(key.toUpperCase().equals(this.numeroPescador)){
            return this.numPescador;
        } else if(key.toUpperCase().equals(this.frequencia)){
            return this.numFrequencia;
        } else {
            return super.getData(key);
        }
    }

    public String getCarteirinha() {
        //return carteirinha;
        return (String) this.hmPessoa.get(this.carteirinha);
    }

    public void setCarteirinha(String carteirinha) {
        this.hmPessoa.put(this.carteirinha, carteirinha);
    }

    public String getEmail() {
        //return email;
        return (String) this.hmPessoa.get(this.email);
    }

    public void setEmail(String email) {
        //this.email = email;
        this.hmPessoa.put(this.email, email);
    }


    public int getNumeroPescador() {
        return numPescador;
    }

    public void setNumeroPescador(int numeroPescador) {
        this.numPescador = numeroPescador;
    }

    public String getObsevacao() {
        return (String) this.hmPessoa.get(this.obsevacao);
        //return obsevacao;
    }

    public void setObsevacao(String obsevacao) {
        this.hmPessoa.put(this.obsevacao, obsevacao);
        //this.obsevacao = obsevacao;
    }

    public String getPeixePreferido() {
        //return peixePreferido;
        return (String) this.hmPessoa.get(this.peixePreferido);
    }

    public void setPeixePreferido(String peixePreferido) {
        //this.peixePreferido = peixePreferido;
        this.hmPessoa.put(this.peixePreferido, peixePreferido);
    }

    public int getFrequencia() {
        return numFrequencia;
    }

    public void setFrequencia(int frequencia) {
        this.numFrequencia = frequencia;
    }

    public String getInsertSql(){
        if (hmPessoa.size() > 0){
        final String separator = ", ";
        StringBuilder campos = new StringBuilder("INSERT into "+ cliTable + " (");
        StringBuilder valores = new StringBuilder(") values (");
        for (String campo : hmPessoa.keySet()) {
            campos.append(campo + separator);

            if (hmPessoa.get(campo) instanceof java.lang.String){
                valores.append("'" + hmPessoa.get(campo) + "'");
            }
            else if (campo.equals(this.dataNascimento)){
                valores.append(getDataNascimentoSql());
            } else valores.append(hmPessoa.get(campo));

            valores.append(separator);
        }
        valores.delete(valores.lastIndexOf(separator), valores.length()); //apaga a ultima ", "
        campos.delete(campos.lastIndexOf(separator), campos.length());
        System.out.println("String Insert Sql: " + campos.toString() + valores.toString());
        
        return campos.toString() + valores.toString() + ")";
        } else {
            return null;
        }
    }

    public boolean isFlagClienteNaoEncontrado() {
        return flagClienteNaoEncontrado;
    }

    public void setFlagClienteNaoEncontrado(boolean flagClienteNaoEncontrado) {
        this.flagClienteNaoEncontrado = flagClienteNaoEncontrado;
    }

    /*
"INSERT into clientes (cpf, nome, sobrenome, apelido, rg, Logradouro, " +
                         "Numero, Bairro, Cidade, Estado, CEP, Telefone, Celular, Email, peixe_preferido, sexo, " +
                         "Carteirinha, Observacao, Frequencia) values ( " + "'" + c.getCpf()+ "'" + " , " + "'" + c.getNome() + "'" + " , " +
                         "'" + c.getSobrenome() + "'" + " , " + "'" + c.getApelido() + "'" + " , " + "'" + c.getRg() + "'" + " , " + "'" + c.getLogradouro() + "'" + " , " + "'" + c.getNumero() + "'" + " , " + "'" + c.getBairro() + "'" + " , " +
                         "'" + c.getCidade() + "'" + " , " + "'" + c.getEstado()+ "'" + " , " + "'" + c.getCep()+ "'" + " , " + "'" + c.getTelefone() + "'" + " , " +
                         "'" + c.getCelular() + "'" + " , " + "'" + c.getEmail()+ "'" + " , " + "'" + c.getPeixePreferido() + "'" + " , " + "'" + c.getSexo() + "'" + " , "
                         + "'" + c.getCarteirinha() + "'" + " , " + "'" + c.getObsevacao() + "', 1 )"
*/


}

